package com.qf.sl.youshare.utils;

/**
 * Created by IDEA
 * User : sl
 * on 2015/2/6.
 * 15:21
 */

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.widget.ImageView;

/**
 * 通用的图片下载异步任务,通过构造方法设置,需要接收图片的ImageView
 */
public class ImageLoader extends AsyncTask<String,Integer,byte[]> {

    /**
     * 设置成员变量用于利用外部的ImageView
     */
    private ImageView imageView;
    private String imgUrl;

    public ImageLoader(ImageView imageView) {
        this.imageView = imageView;
    }

    @Override
    protected byte[] doInBackground(String... params) {
        byte[] ret = new byte[0];

        if (params != null && params.length > 0) {
            imgUrl = params[0];

            //TODO 下载 imgURL 图片

            ret = HttpTools.get(imgUrl);
        }

        return ret;
    }

    @Override
    protected void onPostExecute(byte[] bytes) {
        if (bytes != null) {

            //TODO 更新文件缓存
            FileCache fileCache = FileCache.getInstance();
            fileCache.putContent(imgUrl,bytes);

            Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);

            //TODO 更新内存缓存

            ImageCache imageCache = ImageCache.getInstance();
            imageCache.putImage(imgUrl,bitmap);

            if (imageView != null) {
                //TODO 下载 imgURL 的Tag
                Object tag = imageView.getTag();
                if (tag != null) {
                    if (tag instanceof String){
                        String url = (String) tag;
                        //如果当前下载的地址,与 ImageView 中的 Tag 是一致的
                        //  那么就认为是异步任务要下载的图片
                        if (url.equals(imgUrl)){
                            imageView.setImageBitmap(bitmap);
                        }
                    }
                }else {
                    imageView.setImageBitmap(bitmap);
                }
            }
        }
    }
}
